// 1902. [字符串]公共字符 https://oj.rnd.huawei.com/problems/1902/details
//给定 m 个字符串，请计算有哪些字符在所有字符串中都出现过 n 次及以上。
//输入 首行是整数 n ，取值范围 [1,100]
//第二行是整数 m ，表示字符串的个数，取值范围 [1,100]
//接下来 m 行，每行一个仅由英文字母和数字组成的字符串，长度范围 [1,1000)
//输出 按ASCII码升序输出所有符合要求的字符序列；
//如果没有符合要求的字符，则输出空序列[]。 输入 2
// 3
// aabbccFFFFx2x2
// aaccddFFFFx2x2
// aabcdFFFFx2x2
//输出 [2 F a x]
//字符 a 在三个字符串中都出现 2次，符合要求；
//字符 b 在第二三个字符串中分别出现 0次、1次，不符合要求；
//字符 c 在第三个字符串中出现 1次，不符合要求；
//字符 d 在第三个字符串中出现 1次，不符合要求；
//字符 F 在三个字符串中都出现了 4 次，符合要求；
//字符 x 在三个字符串中都出现了 2 次，符合要求；
//字符 2 在三个字符串中都出现了 2 次，符合要求；
//因此字符 a、F、x、2符合要求，按ASCII码升序输出为 [2 F a x]
//输入 2 3
// aa
// bb
// cc
//输出 []

#include <bits/stdc++.h>
using namespace std;

#define DEBUG
#ifdef DEBUG
#define PF(...) printf(__VA_ARGS__)
#else
#define PF(...)
#endif

class Solution {
 public:
  vector<char> GetNTimesCharacter1(int reqNum, const vector<string> &vtString) {
    vector<char> result;
    // mapFreq: 记录 mapTmpNum 中符合 >=reqNum 的字符数量
    map<char, size_t> mapFreq;
    for (auto str : vtString) {
      // 记录每个字符串中char的数量
      map<char, int> mapTmpNum;
      for (char c : str) {
        mapTmpNum[c]++;
      }
      for (auto [tc, tn] : mapTmpNum) {
        if (tn >= reqNum) {
          mapFreq[tc]++;
        }
        // 全满足,mapFreq[c] == size,即为一个答案
        if (mapFreq[tc] == vtString.size()) {
          result.push_back(tc);
        }
      }
    }
    return result;
  }
};

inline int ReadInt() {
  int number;
  cin >> number;
  return number;
}

template <typename T>
inline vector<T> ReadVector(int size) {
  vector<T> objects(size);
  for (int i = 0; i < size; ++i) {
    cin >> objects[i];
  }
  return objects;
}

template <typename T>
inline void WriteVector(const vector<T> &objects, char delimeter = ' ') {
  auto it = objects.begin();
  if (it == objects.end()) {
    return;
  }
  cout << *it;
  for (++it; it != objects.end(); ++it) {
    cout << delimeter << *it;
  }
}

int main() {
  int n = ReadInt();
  int m = ReadInt();
  vector<string> strings = ReadVector<string>(m);

  Solution solu;
  auto result = solu.GetNTimesCharacter2(n, strings);
  cout << "[";
  WriteVector(result);
  cout << "]" << endl;
  return 0;
}
